"""
声纹识别实现基类
定义声纹识别实现的标准接口
"""

from abc import ABC, abstractmethod
from typing import Tuple, Dict, Any

from src.constants.return_codes import BaseCodeEnum


class VoiceprintImplementation(ABC):
    """
    声纹识别实现的抽象基类
    定义所有声纹识别实现必须遵循的接口规范
    """
    
    @abstractmethod
    def extract_voiceprint(self, audio_file: str, **kwargs) -> Tuple[BaseCodeEnum, Dict[str, Any]]:
        """
        提取音频的声纹特征
        
        Args:
            audio_file: 音频文件路径
            **kwargs: 扩展参数
            
        Returns:
            Tuple[int, str, Dict[str, Any]]: (状态码, 声纹ID, 结果信息)
            - 状态码: 200表示成功，其他表示错误
            - 声纹ID: 基于声纹特征生成的唯一标识符
            - 结果信息: 包含特征提取详情和元数据的字典
        """
        pass
    
    @abstractmethod
    def get_feature_info(self) -> Dict[str, Any]:
        """
        获取特征提取信息
        
        Returns:
            Dict[str, Any]: 包含特征维度、提取算法等信息的字典
        """
        pass
    
    @abstractmethod
    def compare_voiceprints(self, voiceprint1: str, voiceprint2: str) -> Tuple[float, Dict[str, Any]]:
        """
        比较两个声纹特征的相似度
        
        Args:
            voiceprint1: 第一个声纹特征
            voiceprint2: 第二个声纹特征
            
        Returns:
            Tuple[float, Dict[str, Any]]: (相似度分数, 比较结果信息)
            - 相似度分数: 0-1之间的相似度值
            - 比较结果信息: 包含比较详情和置信度的字典
        """
        pass